#include "time32.h"
#include <string.h>
#include <stddef.h>
#include <sys/resource.h>

struct compat_rusage {
    struct timeval32 ru_utime;
    struct timeval32 ru_stime;
    long    ru_maxrss;
    long    ru_ixrss;
    long    ru_idrss;
    long    ru_isrss;
    long    ru_minflt;
    long    ru_majflt;
    long    ru_nswap;
    long    ru_inblock;
    long    ru_oublock;
    long    ru_msgsnd;
    long    ru_msgrcv;
    long    ru_nsignals;
    long    ru_nvcsw;
    long    ru_nivcsw;
};

int __getrusage_time32(int who, struct compat_rusage *usage)
{
    struct rusage ru;
    int r = getrusage(who, &ru);
    if (!r) {
        usage->ru_utime.tv_sec = ru.ru_utime.tv_sec;
        usage->ru_utime.tv_usec = ru.ru_utime.tv_usec;
        usage->ru_stime.tv_sec = ru.ru_stime.tv_sec;
        usage->ru_stime.tv_usec = ru.ru_stime.tv_usec;
        memcpy(&usage->ru_maxrss, &ru.ru_maxrss,
            sizeof(struct compat_rusage) -
            offsetof(struct compat_rusage, ru_maxrss));
    }
    return r;
}
